(function (undefined) {

    (function (factory) {
        "use strict";

        // amd module
        if (typeof define === "function" && define.amd) {
            define(["jquery", "widget" /*,其他脚本文件名称请在这里填写，如'echarts'*/], factory);
        }
        // global
        else {
            factory();
        }

    })
    (function ($, widget /*,其他脚本文件对外暴露接口请在这里填写，如'charts'*/) {
        "use strict";

        //关于组件配置说明，请见"开发者中心"，搜索"388.组件设计"
        //关于代码调试工具的使用说明，请见"开发者中心"，搜索"397.开发者工具使用文档"
        //以下代码均可以删除，不用的功能，都删掉，减少代码冗余
        var Component = function ($widget, option, attr, css, auiCtx) {
            var context = this;

            //Data Model
            context.$view = $widget;
            context.option = option;
            context.attr = attr;
            context.css = css;
            context.pageContext = auiCtx;


            //View Model
            context.viewCache = {};

            //cache
            //context.cache={};

            //初始化
            context._init();

            //渲染样式
            //context._render();

            //绑定事件
            //context._listen();
        };
        Component.prototype = Component.fn = {
            constructor: Component,
            version: 'AWOS 5.1 SoY3',
            author: 'qinshuo',

            debugger: window.auiApp && window.auiApp.debugger,

            //常量表
            //constant:{},


            //初始化（私有）
            _init: function () {
                var $widget = this.$view,
                    template = this._create(this);
                $widget.empty().append(template.join(''));
            },
            _create: function (that) {
                var $widget = that.$view,
                    html = [],
                    icon = that.option.icon,
                    text = that.option.text;
                html.push('<div class="made-icon" style="width:60px;height:60px"><div class="made-icon-icon" style="text-align: center;width:60px;height:45px;background-color: #E8E7E3;line-height:45px;font-size: 38px;">');
                html.push('<span class="input-group-label"><i class="' + icon + '" ></i></span>');
                html.push(' </div><div class="made-icon-text" style="text-align: center;width:60px;height:15px;line-height:15px;background-color: #F7F7F7;">' + text + '</div>');
                return html;
            },
            //事件绑定（私有）
            _listen: function () {
                var $widget = this.$view;
                //绑定事件，推荐使用事件冒泡
                //这里绑定的事件一定不能与业务逻辑有关的，否则应该在“事件配置”中定义

                $widget
                //解绑上次的事件
                    .off('.namespace')
                    //绑定事件
                    .on({
                        'eventType1.namespace': function (e) {
                            //使用兼容IE8事件兼容的用法
                            var $target = $(e.target || window.event.srcElement);

                            //判断$target是什么
                            if (
                                //判断target是否为a标签
                                $target.is('a') ||

                                //判断target是不是$widget
                                $target.is($widget) || $target.is(this) ||

                                //或者target是否有某个样式
                                $target.hasClass('.dataTables') ||

                                //触发的元素开始找，父辈是否有a标签
                                $target.closest('a').length
                            //其他选择器，请搜索“jQuery选择器”
                            ) {
                                //do something
                            }
                        },
                        'eventType2.namespace': function (e) {

                        },
                        //example,获取点击a标签的id
                        //事件-->触发范围 ###_ID## a，接口-->查看接口getter配置
                        'click.namespace': function (e) {
                            var $target = $(e.target || event.srcElement);

                            if ($target.is('a')) {
                                //例如 a标签的html为 <a data-href="bbb">Hello world</a>
                                cache.href = $target.attr('[data-href]');
                            }
                        }
                    });
            },

            //渲染主题、样式（私有）
            _render: function () {
                var $widget = this.$view,
                    css = this.css,
                    style;

                //css样式配置渲染
                if (css && css.theme) {
                    //如果组件配置了类名主题，则要同时将类名加到组件相应位置上去
                    /*
                             * 如 ：if(css.theme['function']){
                                 $button.removeClass().addClass('btn ' + css.theme['function']);
                             }*/
                }

                if (css && (style = css.style)) {
                    //1.直接拿到样式内容和选择器，利用jq的css()渲染配置样式
                    //2.利用 $AW.cssHover(select,$selector,content,pseudo)方法生成虚拟渲染样式，他将在组件dom结构后面插入内联样式，直接覆盖外联样式表里面的样式。
                    // 如：	$AW.cssHover('input.input-group-field',$selector,style.inputActive,':active');
                    /*
                             select：样式对应的选择器，如‘input.input-group-field’
                             $selector:组件操纵对象或组件选择器
                             content:css样式配置的内容
                             pseudo:伪类、伪元素,动态类名，如‘:hover\:focus\.btn-hover’.如果只想添加虚拟样式，可以直接传入 ‘’ 空字符串。
                             */
                }

            },
            _renderFakeData: function () {
            },

            destroy: function () {
                this.$view.off().empty();
            },
            getValue: function () {
                //return value;
            },
            setValue: function (linkList) {
                /*
                         *   linkList=[{
                         *       name:'链接项1',
                         *       href:'id1
                         *   }]
                         * */
                var //模板
                    TEMPLATE = '<a data-href="_value_">_name_</a>',
                    //填充数据
                    html = [],
                    //中间变量
                    i, item,

                    $widget = this.$view;

                //清空上次的内容
                $widget.empty();

                if (linkList === 'auiAjaxText') {
                    //此处为 AWEB IDE 下 异步传输数据测试信号
                } else if (linkList && linkList.length) {//校验输入数据
                    for (i = -1; item = linkList[++i];) {
                        html.push(
                            TEMPLATE
                                .replace(/_name_/ig, item.name)
                                .replace(/_value_/ig, item.href)
                        );
                    }
                    //填充内容
                    $widget.append(html.join(''));
                }
            },
            success: function ($selector) {
            },
            error: function ($selector, errorMsg) {
            },
            clean: function (e) {
            },
            validateHandler: function (value) {
                return {
                    result: true, //校验结果
                    value: value, //传输的格式
                    errorMsg: '' //校验失败的错误提示
                }
            },
            behavior: function (result, input1, input2, condition) {
                this[result ? 'hide' : 'show']();
            },
            show: function () {
                this.$view.removeClass('hide');
            },
            hide: function () {
                this.$view.addClass('hide');
            }
        };

        //下面的代码，如无必要，无需修改，但需要查看每个入参的意义
        widget.custom.madeIcon = function ($widget, option, attr, css, auiCtx) {
            return new Component($widget, option, attr, css, auiCtx);
        };
    });
})();
